﻿/**
 * 图片拖动处理
 */
(function(E, $){

var Consts = E.consts,
	index = 0,
	timeId = 0,
	Selection = E.mod("Selection"),
	Event = E.mod('Event');

E.plugin("DragImage", {
	mousedown: false,
	
	reset: function( ){
		reset();
	}
});

// 拖动图片
// @param img {jQueryElement}
function dragImage(img){
	var wrap = img.closest("div.img"), 
		id = img.attr('id');
	
	// 2012-01-17 22:24 潘雪鹏
	// 必须延迟执行，否则可能不成功
	// 当图片外面有超链接时，拖动时会带着超链接一起拖走
	
	E.$("#wrap-"+id).hide();
	setTimeout(function(){
		var img = E.$("#"+id), wrap = E.$("#wrap-"+id);
		if( img.parent().is('a') ){
			img.parent().after( wrap );
			wrap.prepend( img.parent() );
		}else{
			img.after( wrap );
			wrap.prepend( img );
		}
		wrap.show();
		if( Consts.IE ){
			E.monitor('dragImage');
		}
		//reset();
	}, 0);
}


if ($.browser.webkit) {
Event.bind('dragend', function(dom, e){
	var element = Event.getElement();
	if( !element.img ){
		return;
	}
	
	// chrome下面有点特殊
	// 当使用鼠标点击图片并拖动时，会丢失超链接
	// 如果是先点击一下图片，放开鼠标，再拖动图片则可以带着超链接一起拖动
	
	dragImage( E.$(element.img) );
	E.log("run", "图片拖拽结束（针对dom绑定的事件）");
});
}

Event.bind('mousedown', function(dom, e){
	var target = $(e.target);
	if( target.is('img') ){
		E.plugin("DragImage").mousedown = true;
		
		E.log("run", "给图片绑定拖拽事件");
		// 
		target.unbind('dragend').bind('dragend', function(e){
			dragImage( $(this) );
			E.log("run", "图片拖拽结束（针对图片绑定的事件）");
		});
	}
});


Event.bind('mouseup', function(dom, e){
	E.plugin("DragImage").mousedown = false;
});

function reset(){
	// chrome ie 支持 dragend 事件，firefox不支持
	var imgs = E.$("img");
	
	imgs.each(function(i, el){
		$(el).attr('id', "img-"+index);
		$(el).closest('div.img').attr('id', "wrap-img-"+index);
		index +=1;
	});
}

Event.bind('oncomplete', function(){
	reset();
	
	/*
	if( $.browser.mozilla ){
		// mozilla 不支持 dragend 事件
		// 使用定时器弥补
		
		// 新版本(16)已经可以像ie一样操作了，不需要如此处理了（潘雪鹏） 2012-11-26 18:55
		clearInterval(timeId);
		timeId = setInterval(function(){
			E.$("img").each(function(i, el) {
				var img = $(el), id = img.attr('id'),
					wrap = E.$("#wrap-"+id);
				
				if( !img.closest('div.img').size() ){
					// 图片外面没有div包裹，则先找一下div是否存在，如果存在则拿过来
					if( wrap.size() ){
						if( img.parent().is('a') ){
							img.parent().after( wrap );
							wrap.prepend( img.parent() );
						}else{
							img.after( wrap );
							wrap.prepend( img );
						}
					}
				}
			});
		}, 5000);
	}
	*/
});


})(jQEditor, jQuery);